/*

* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Smart-Shop开源商城系统/ Java商城-首选电商平台系统 请务必保留此注释头信息
* |     开源地址: https://gitee.com/ningbo-qishan/gruul-mall
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     可正常分享和学习源码,未经授权 不可商用！
* |     商业版中台购买/开源版商业授权 联系技术客服
* |     官网:  https://www.73app.cn/
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Copyright (c) 2016-2999 宁波启山智软科技有限公司
* |     版权所有 ,侵权必究！
* ------------------------------------------------------------------------

*/
package com.medusa.gruul.payment.api.model.param.sxf;


import lombok.Data;

import java.util.List;

/**
 * @author create by zq
 * @date created in 2019/11/10
 */
@Data
public class SxfWxPlatformPay {


    /**
     * 商户订单号,64 个字符以内、只 能包含字母、数 字、下划线；需 保证在商户端不 重复
     */
    private String ordNo;


    /**
     * 商户入驻返回的 商户编号
     */
    private String mno;


    /**
     * 子商户号
     */
    private String subMechId;


    /**
     * 订单总金额，单 位为元，精确到 小数点后两位， 取值范围 [0.01,10000000 0]
     */
    private String amt;


    /**
     * 参与优惠金额， 单位元，精确到 小数点后两位 [0.01,10000000 0]；支付宝字段
     */
    private String discountAmt;


    /**
     * 不参与优惠金 额，单位元，精 确到小数点后两 位 [0.01,10000000 0]；支付宝专用
     */
    private String unDiscountAmt;


    /**
     * 支付渠道 对订单的描述， 取值范围： WECHAT: 微 信,ALIPAY:支付 宝 ， UNIONPAY: 银联
     */
    private String payType;


    /**
     * 支付方式  02 公众号/服 务窗/js支付 03 小程序
     */
    private String payWay;


    /**
     * 订单失效时间, 以分种为单位， 最短失效时间为 1 分钟，最长失 效时间为 1440 分钟，该参数数 值不接受小数
     */
    private String timeExpire;


    /**
     * 限制卡类型 指定支付方式 00-全部 01-限定不能使 用信用卡支付 默认值 00
     */
    private String limitPay;


    /**
     * 订单标题
     */
    private String subject;


    /**
     * 花呗分期数
     */
    private String hbFqNum;


    /**
     * 卖家承担分期服 务费比例；不上 送默认由买家承 担
     */
    private String hbFqPercent;


    /**
     * 交易来源； 01：服务商  02：收银台 03：硬件
     */
    private String tradeSource;


    /**
     * 交易 ip 地址
     */
    private String trmIp;


    /**
     * 持卡人ip 银联 js 支付时， 该参数必传
     */
    private String customerIp;


    /**
     * 用户号 微信：openid； 支付宝： userid；银联： userid；微信& 支付宝必传，银 联 js 为非必传
     */
    private String userId;


    /**
     * 微信子公众号 非必填
     */
    private String subAppid;


    /**
     * js 支付，前台 成功通知地址
     */
    private String outFrontUrl;


    /**
     * js 支付，前台 事变通知地址 与成功地址同时存 在或同时不存在
     */
    private String outFrontFailUrl;


    /**
     * 支付结果通知地 址
     */
    private String notifyUrl;


    /**
     * appId
     */
    private String appId;


    /**
     * 电子发票功能 微信开具电子发 票使用；目前仅 支持微信；交易 渠道为支付宝、 银联时上送该参 数则返回错误 00:是，01:否
     */
    private String needReceipt;


    /**
     * 是否做分账 分账交易使用； 00：做；01：不 做；不传默认为 不做分账
     */
    private String ledgerAccountFlag;


    /**
     * 分账有效时间 单位为天；是否 做分账选择 00 时该字段必传； 最大支持上送： 30；注：从发起 交易日期记为 1
     */
    private String ledgerAccountEffectTime;


    /**
     * 银联终端号
     */
    private String ylTrmNo;


    /**
     * TQ 机具编号， 支付来源为硬件 时，该参数为必 传；
     */
    private String terminalId;


    /**
     * 设备号
     */
    private String deviceNo;


    /**
     * 是否实名支付： 00：是，01：否 不传默认为 01;00 时；买家 姓名、证件类 型、证件号为必 填
     */
    private String identityFlag;


    /**
     * 证 件 类 型 : 大 陆：IDCARD；目 前仅支持大陆证 件号
     */
    private String buyerIdType;


    /**
     * 证件号:证件号 只允许等于 18 位
     */
    private String buyerIdNo;


    /**
     * 买家name
     */
    private String buyerName;


    /**
     * 手机号
     */
    private String mobileNum;


    /**
     * 订单优惠标识 00 ：是，01 ： 否；目前仅支持 微信；交易渠道 为支付宝、银联 时上送该参数则 返回错误
     */
    private String goodsTag;


    /**
     * 优惠详情信息
     */
    private CouponDetail couponDetail;


    @Data
    public class CouponDetail {


        /**
         * 订单原价；单 位元，保留两 位小数；微信 独有
         */
        private String costPrice;


        /**
         * 商品小票 ID； 微信独有
         */
        private String receiptId;


        /**
         * 单品优惠信 息
         */
        private List<GoodsDetail> goodsDetail;

    }

    @Data
    public class GoodsDetail {


        /**
         * 商品编码
         */
        private String goodsId;


        /**
         * 微信/支付宝侧 商品码
         */
        private String thirdGoodsId;


        /**
         * 商品名称
         */
        private String goodsName;


        /**
         * 商品数量
         */
        private String quantity;


        /**
         * 商品单价；单 位元，保留两 位小数
         */
        private String price;


        /**
         * 商品类目；支付宝独有
         */
        private String goodsCategory;


        /**
         * 商品类目树， 从商品类目根 节点到叶子节 点的类目 id 组 成，类目 id 值 使用|分割
         */
        private String categoriesTree;


        /**
         * 商品描述；支付宝独有
         */
        private String goodsDesc;


        /**
         * 商品展示地址 url；支付宝独有
         */
        private String showUrl;
    }

}
